package Offer;

/**
 * @author lakersUp
 * @Classname  Offer44findNthDigit
 * @Description   数字序列中某一位的数字
 *
 *      1.确定所在的数字是是在几位数
 *      2.确定在哪个数里面
 *      3.确定这个数的哪一个数字
 * @Date 2022/2/26 17:11
 * @Version 1.0
 */
public class Offer44findNthDigit {
    public int findNthDigit(int n) {
        int digit=1;
        //long类型防止溢出
        long start=1;
        long count=9;
        //1.确定所在的数字是是在几位数
        while(n>count){
            n-=count;
            digit++;
            start*=10;
            count=start*digit*9;
        }
        //2.确定在哪个数里面
        long num=start+(n-1)/digit;
        //3.确定这个数的哪一个数字
        //先转字符串再转int,字符串好操作
        return Long.toString(num).charAt((n-1)%digit)-'0';
    }
}
